home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 090 / rpc161a1.arc / RPCMERGE.DOC < prev    next >
Text File  |  1988-04-13  |  11KB  |  297 lines

  1. *****************************************************************************
  2. ************************ RBBS-PC Protocol Controller ************************
  3. ************************       By John Morris        ************************
  4. *****************************************************************************
  5.  
  6.  
  7.    To start...   This had to be the most scary mod I've ever written. The
  8. concept was simple, make a very flexible and expandable file transfer
  9. system for my RBBS.  But actually cutting out whole chunks of RBBS, and
  10. putting untested code in was scary..   but, in the end it worked after
  11. the second compile.
  12.    I completely re-did the whole RBBS transfer protocol interface. This
  13. was needed so SysOps didn't have to bled in a new merge, and then compile
  14. the program just to add a new protocol (or take one out). IE: I had to
  15. make the program 'assume nothing' (well... almost).. I thought it was
  16. going to be a huge task.. but I think in the end the code is actually 
  17. smaller than normal.
  18.  
  19. NOTE:  (4/13 16-1A version)
  20.   RPC Merge for RBBS-PC 16-1A will work BLED and compile into RBBS-PC
  21. without having to make room for the new code. All that is required is
  22. that you use the batch file that I supply to compile RBBS-PC. The docs
  23. say to compile RBBS-PC.BAS with the /E option (for error checking), BUT
  24. RBBS-PC.BAS does NOT have an ON ERROR statement, nor any RESUME linenumber
  25. statements, so the /E option is NOT needed!
  26.  
  27.  
  28. How it works:
  29.  
  30.     The whole new xfer system revolves around one file: RBBSXFRx.DEF
  31.     where 'x' is the node number. Single node systems would have a file
  32.     called RBBSXFR1.DEF
  33.  
  34. Here is what my RBBSXFR1.DEF file looks like:
  35.  
  36. Z,Zmodem,c:\ext\RZ,c:\ext\SZ,E,DSZ,2
  37. I,Imodem,c:\ext\RI,c:\ext\SI,E,QMX,1
  38. B,Ymodem Batch,c:\ext\RB,c:\ext\SB,E,DSZ,8
  39. W,Wxmodem,c:\ext\WXR,c:\ext\WXS,E,QMX,0
  40. K,Kermit,c:\ext\KERMITR,c:\ext\KERMITS,E,QMX,5
  41. G,YmodemG,c:\ext\RG,c:\ext\SG,E,DSZ,9
  42.  
  43. For sysops with TWO OR MORE nodes:
  44.  
  45. Here is what my RBBSXFR2.DEF (node 2) file looks like:
  46.  
  47. Z,Zmodem,c:\ext\RZ,c:\ext\SZ,D,DSZ,2
  48. I,Imodem,c:\ext\RI,c:\ext\SI,D,QMX,1
  49. B,Ymodem Batch,c:\ext\RB,c:\ext\SB,D,DSZ,8
  50. W,Wxmodem,c:\ext\WXR,c:\ext\WXS,D,QMX,0
  51. K,Kermit,c:\ext\KERMITR,c:\ext\KERMITS,E,QMX,5
  52. G,YmodemG,c:\ext\RG,c:\ext\SG,D,DSZ,9
  53.  
  54. (NOTE: The order in which you place the protocols does NOT matter!)
  55.  
  56. In my case Node 1 has much less memory to work with, so all I Exit RBBS
  57. for all my Xtra protocols. Node 2 I SHELL Directly to the external protocol
  58. drivers.
  59.  
  60. Lets break one line of that down so you know what is going on.
  61.  
  62. Z,Zmodem,c:\ext\RZ,c:\ext\SZ,D,DSZ,2
  63.  
  64. Z             -  This is the character which selects this protocol  
  65.                  
  66. Zmodem        -  This is the name of this protocol
  67.  
  68. c:\ext\RZ     -  This is the download batch file name
  69.  
  70. c:\ext\SZ     -  This is the upload batch file name
  71.  
  72. D             -  This is the method to use to call this protocol
  73.  
  74. DSZ           -  This is the method used to check for success
  75.  
  76. 2             -  This is an option preferred when using this protocol
  77.  
  78.  
  79. In other words,  The protocol name is Zmodem, to pick Zmodem, you use the
  80. character Z. The batch file used to run a Zmodem download is C:\EXT\SZ.BAT,
  81. and the Zmodem upload file is C:\EXT\RZ.BAT.  The method used to call
  82. Zmodem is shell D)irect to the protocol driver. After the xfer, you check
  83. for success using the DSZ method.. and the option you would like for Zmodem
  84. is not to show the user the number of blocks, just the size of the file.
  85.  
  86. File Selection Character
  87. ------------------------
  88.  
  89. The file select character can be any character you like. (only one
  90. character though, please).  You could add a couple more protocols to my
  91. list..  M for Megalink, or S for Sealink, etc.
  92.  
  93. File Transfer Protocol Name
  94. ---------------------------
  95.  
  96. You could name the file xfer protocol anything you wish. For instance,
  97. you could rename Zmodem to   Zmodem (DSZ)  or   Ymodem could be:
  98. True Ymodem.. or  Xmodem-1k..
  99.  
  100. Download & Upload Batch files
  101. -----------------------------
  102.  
  103. The Batch files are still needed even when you are shelling directly to
  104. the external protocol driver.  I decided to do it this way so you could
  105. change any parameter easily with any text editor.  If you are using the
  106. shell method, the RPC automatically rewrites the batch file into a string
  107. that it uses to shell to the protocol driver.  You can put these batch
  108. files in any subdirectory, (mine is c:\ext) and if you don't add the '.BAT'
  109. to the end of its name, RPC will do it for you.   More on the batch files
  110. below.
  111.  
  112. Method to use when calling this protocol
  113. ----------------------------------------
  114.  
  115. You have two options here,  D  means to shell directly to the protocol
  116. driver.  E  means to Exit RBBS-PC and invoke the driver through a batch
  117. file.
  118.  
  119. Success Check Method
  120. --------------------
  121.  
  122. You also have two options here.  DSZ, and anything else. This is because
  123. DSZ outputs its log file in a different method than does QMXFER (or related
  124. programs)   If you are using DSZ (which seems to be best for almost all
  125. protocols, at least the ones it supports) choose this method..  Because
  126. DSZ -appends- to its log each time, the XFER-x.DEF must be deleted after each
  127. transfer.  The Other method of checking for success is the one mentioned
  128. in the RBBS-PC docs, and the one currently implemented in RBBS-PC.
  129.  
  130. Mode
  131. ----
  132.  
  133. There are several modes that are going to be a part of RPC.
  134. 1   --  Reliable mode needed for this protocol
  135. 2   --  Don't print number of blocks in the file
  136. 3   --  Batch Transfer allowed   (not implemented as of yet)
  137. 4   --  Same as Mode 2 plus, allow batch transfer (not implemented)
  138. 5   --  Mode 2 + Write out Fake Transfer report when using this protocol
  139.         (this is needed so RBBS doesn't crash upon return from a transfer)
  140. 6   --  Not used
  141. 7   --  Not used
  142. 8   --  1k blocks
  143. 9   --  Mode 1 plus 1k blocks
  144.  
  145. Batch Files: 
  146. ------------
  147.  
  148. First 4 samples of the batch files currently in use:
  149.  
  150.  RZ.BAT
  151.  ------
  152. ECHO OFF
  153. C:\ext\DSZ port %2 speed %1 rz %3
  154. rbbs.bat
  155.  
  156.  SZ.BAT
  157.  ------
  158. ECHO OFF
  159. c:\ext\DSZ port %2 speed %1 sz %3
  160. rbbs.bat
  161.  
  162.  KERMITR.BAT
  163.  -----------
  164. ECHO OFF
  165. c:\ext\PCKERMIT -l COM%2 -b %1 -m 31 -p %4 -r %3 -c
  166. cls
  167. rbbs.bat
  168.  
  169.  KERMITS.BAT
  170.  -----------
  171. ECHO OFF
  172. c:\ext\PCKERMIT -l COM%2 -b %1 -m 31 -p %4 -s %3 -c
  173. cls
  174. rbbs.bat
  175.  
  176. As you can see, all the batch files have a few things in common. First,
  177. there MUST be a line before the actual transfer line.. In this case ECHO
  178. OFF.   Then comes the Transfer line.   RPC looks at the line like this:
  179.  
  180. %1   --  baud rate    (300,1200.. etc.)
  181. %2   --  comm port    (1 or 2) 
  182. %3   --  file name
  183. %4   --  parity       (E or N)
  184. %5   --  node number  for QMXFER program (not needed for DSZ)
  185.  
  186. After the actual transfer line you can have any command(s) you want.
  187.  
  188. If using the Exit RBBS-PC method, then RPC will execute the batch file
  189. with those parameters. When using the shell Directly to the protocol 
  190. driver, RPC first loads the SECOND line of the batch file into memory,
  191. then rewrites it with the necessary info..  So, the RZ.BAT would get parsed
  192. into this:
  193.  
  194. C:\ext\DSZ port 1 speed 2400 rz d:\rbbs-pc\rbbs-src.arc
  195.  
  196. and then RPC would then SHELL that string.
  197.  
  198. You could rewrite the actual command line to read anything like:
  199.  
  200. C:\ext\DSZ port %2 speed %1 z pL1024 rz %3
  201.  
  202. which would then be:
  203.  
  204. C:\ext\DSZ port 1 speed 2400 z pL1024 rz d:\rbbs-pc\rbbs-src.arc
  205.  
  206. So, customization of the batch files is all that is needed to change
  207. things around to your liking.
  208.  
  209. Some other ideas:  I put Kermit as an Exit RBBS-PC type of protocol just
  210. as an experiment.   Practical uses of the Exit RBBS method are quite a
  211. few in number...  First, it will save you large amounts of memory over
  212. the SHELL method. Second, for protocol drivers like... CLINK.EXE which
  213. are usually invoked like this:
  214.  
  215. C>CLINK
  216.  
  217. You could make CLINKR.BAT use the Exit RBBS method, have your batch file
  218. change directories to your upload directory, and then perform the transfer
  219. that way the file ends up where it should, then get back to your RBBS 
  220. directory and the reinvoke your RBBS batch file. (check out the supplied
  221. .BAT files for more info on how to use CLINK or MEGALINK)
  222.  
  223. Compiling info:
  224. ---------------   
  225.  
  226.  I compile RBBS-PC using QuickBASIC 3.0 using the following
  227. commands (in my RBBSCOMP.BAT):
  228.  
  229. QB RBBS-PC /O;
  230. IF NOT ERRORLEVEL 1 QB RBBSSUB1 /X/C:512/O;
  231. IF NOT ERRORLEVEL 1 QB RBBSSUB2 /O;
  232. IF NOT ERRORLEVEL 1 QB RBBSSUB3 /O;
  233. LINK @LINKLST3.DAT
  234.  
  235. NOTE: This is different than the RBBS-PC docs say! As I have already 
  236. mentioned, RBBS-PC.BAS does NOT have an ON ERROR statement, nor any
  237. RESUME linenumber statements, so it can be compiled without the /E 
  238. option thus reducing the size of the program, and opening up new vistas 
  239. in code space. This is the reason the NEW RPC Merge can add 10k of code
  240. to RBBS-PC.BAS and still fit into it without any modifications.
  241.  
  242. Compiler Compatibility:
  243. -----------------------
  244.  
  245. This merge was written to be compiled under QuickBASIC 1.0 or greater, 
  246. and does NOT contain END IF statements like the last version of the RPC 
  247. Merge.
  248.  
  249. Famous Last Words:
  250. ------------------
  251.  
  252.      I hope I accomplished something here which everyone will like.
  253.  It sure has made my life easier.. and just the fact that I know I 
  254. won't have to recompile my program everytime something fails is a life
  255. saver to me.
  256.  
  257.      I hope to have batch transfer mod for the RPC soon. In my Original
  258. 14-1x and 15-1x DSZ Merge I explained how to implement a simple batch
  259. transfer in the RBBS-PC code..  I hope to expand on this idea.
  260.  
  261. RPC Merge Release info:
  262. -----------------------
  263.  
  264. 12/25/87 (release 2 15-1C)
  265. Rewrote the first two lines found at line 13390 in RPC-PC.MRG so QB3 would
  266. compile without a hitch. Also added 4 more batch files for both the
  267. Sealink, and Megalink protocols. I also want to thank those poeple who
  268. reported their problems to me, so we could get this worked out.
  269.  
  270. 12/28/87 (release 3 15-1C)
  271. I clarified the docs so they are understood correctly. Also fixed a small
  272. problem in line 13390 which would cause a file already open error and crash
  273. the system  (which just crept up after a month and a half of faithful
  274. service)
  275.  
  276. 01/02/88 (release 4 15-1C)
  277. Fixed 'BAD FILE NUMBER' error.. RPC deleted the CALL OPENCOM(...) in
  278. the ANSWERIT SUB in RBBSSUB1.BAS.   Also fixed the LINK error message
  279. caused by the missing LOGERRMSG subroutine.
  280.  
  281. 04/13/88 (release 1 16-1A)
  282. What me worry?  Yes, I am releasing this on the 13th.. hope that date
  283. doesn't have any significance!  I BLED Merged it.. Compiled it.. Ran it..
  284. 'Looked' like it was working fine.. but you all know how that goes.. 
  285. BUGS you say?  Let me know right away!
  286.  
  287. If you have any further Ideas, Suggestions, Bug fixes, or whatever, give
  288. me a ring at:
  289.  
  290. John Morris
  291. The Reno RBBS
  292. Home of the RPC Merge, GMon, and Tradewars!
  293. 702-746-1364 DATA   (J)oin the RBBS-PC conference)
  294. 702-746-1365 DATA
  295. 702-746-1358 VOICE  (varied hours on the voice line)
  296.  
  297.